package com.moodbox.server.user.service;

import com.moodbox.server.common.enums.UserRoleEnum;
import com.moodbox.server.user.dto.UserProfileDTO;
import com.moodbox.server.user.dto.WxLoginDTO;
import com.moodbox.server.user.entity.User;

/**
 * 用户服务接口
 */
public interface UserService {
    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    User getUserById(String userId);

    /**
     * 根据微信OpenID获取用户信息
     * @param wxOpenId 微信OpenID
     * @return 用户信息
     */
    User getUserByWxOpenId(String wxOpenId);

    /**
     * 微信登录
     * @param wxLoginDTO 微信登录信息
     * @return 用户信息
     */
    User wxLogin(WxLoginDTO wxLoginDTO);

    /**
     * 创建新用户
     * @param user 用户信息
     * @return 创建后的用户
     */
    User createUser(User user);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 更新后的用户
     */
    User updateUser(User user);

    /**
     * 更新用户角色
     * @param userId 用户ID
     * @param role 新角色
     * @return 更新后的用户
     */
    User updateUserRole(String userId, UserRoleEnum role);

    /**
     * 检查是否为管理员
     * @param userId 用户ID
     * @return 是否为管理员
     */
    boolean isAdmin(String userId);

    /**
     * 检查是否为超级管理员
     * @param userId 用户ID
     * @return 是否为超级管理员
     */
    boolean isSuperAdmin(String userId);

    /**
     * 生成用户唯一标识Token
     * @param user 用户信息
     * @return 用户Token
     */
    String generateUserToken(User user);

    /**
     * 验证用户Token
     * @param token 用户Token
     * @return 用户ID
     */
    String validateUserToken(String token);
    
    /**
     * 完善用户资料
     * @param userId 用户ID
     * @param userProfileDTO 用户资料信息
     * @return 更新后的用户
     */
    User completeProfile(String userId, UserProfileDTO userProfileDTO);
    
    /**
     * 检查用户资料是否完整
     * @param userId 用户ID
     * @return 是否完整
     */
    boolean isProfileComplete(String userId);
    
    /**
     * 获取用户详细信息
     * @param userId 用户ID
     * @return 用户详细信息
     */
    User getUserDetails(String userId);
} 